package ar.com.jsejtman.cajugastos2.core.service.data;

/**
 * Define el criterio de ordenamiento de una consulta (el nombre del campo y la dirección de
 * ordenamiento).
 * 
 * @author Sebastián Matienzo
 */
public class SortCriterion {

	/**
	 * Nombre del campo.
	 */
	private String fieldName;

	/**
	 * Dirección de ordenamiento.
	 */
	private SortDirection direction;

	/**
	 * Constructor por defecto.
	 */
	public SortCriterion() {

	}

	/**
	 * Constructor con nombre del campo y dirección de ordenamiento.
	 * 
	 * @param fieldName Nombre del campo.
	 * @param direction Dirección de ordenamiento.
	 */
	public SortCriterion(final String fieldName, final SortDirection direction) {

		this.fieldName = fieldName;
		this.direction = direction;
	}

	/**
	 * Obtiene el nombre del campo.
	 * 
	 * @return Nombre del campo.
	 */
	public final String getFieldName() {

		return (this.fieldName);
	}

	/**
	 * Asigna el nombre de campo.
	 * 
	 * @param fieldName Nombre del campo.
	 */
	public final void setFieldName(final String fieldName) {

		this.fieldName = fieldName;
	}

	/**
	 * Obtiene la dirección de ordenamiento.
	 * 
	 * @return Dirección de ordenamiento.
	 */
	public final SortDirection getDirection() {

		return (this.direction);
	}

	/**
	 * Asigna la dirección de ordenamiento.
	 * 
	 * @param direction Dirección de ordenamiento.
	 */
	public final void setDirection(final SortDirection direction) {

		this.direction = direction;
	}

	@Override
	public final String toString() {

		return ("FieldName=" + ((this.fieldName != null) ? this.fieldName : "(null)") + ","
		        + "SortDirection=" + ((this.direction != null) ? this.direction : "(null)"));
	}
}
